/**
 * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
 *
 * 字符串按照数字型号波形变换
 * @param str string字符串 带变换的字符串
 * @param numRows int整型 行数（高度）
 * @return string字符串
 */
function convert (str, numRows) {
  // write code here
  let len = str.length // 获得这个的长度
  let matrix = new Array(numRows).fill(0).map(() => new Array(len).fill(0)) // 生成二维数组
  let index = 0
  let row = numRows - 1// 初始的行
  let col = 0 // 初始的列
  while (index < len) { // 当没走到最后一个的时候
    let i = 0 // 初始列走几步
    let j = 0 // 初始行走几步
    while (i < 2 && index < len) {
      matrix[row][col++] = str[index++] // 赋值给这个位置 // 下标++ 和列也++
      i++ // 循环三次
    } // 退出的时候 col = 3
    if (index >= len) {
      break
    }
    while (j < (numRows - 1) && index < len) {
      matrix[row--][col] = str[index++]
      j++ // 向上去走 走numRow-1步
    }
    if (index >= len) {
      break
    }
    i = 0
    j = 0
    while (i < 2 && index < len) {
      matrix[row][col++] = str[index++] // 赋值给这个位置 // 下标++ 和列也++
      i++ // 循环三次
    } // 退出的时候 col = col + 3
    if (index >= len) {
      break
    }

    while (j < (numRows - 1) && index < len) {
      matrix[row++][col] = str[index++]
      j++ // 向上去走 走numRow-1步
    }
    if (index >= len) {
      break
    }

  }
  // console.log(matrix);
  let res = ''
  for (let i = 0; i < numRows; i++) {
    for (let j = 0; j < len; j++) {
      if (matrix[i][j] !== 0) {
        res += matrix[i][j]
      }
    }
  }
  return res
}
let str = "ABCDEFGHIJKLMNOPQ"
let numRows = 3
console.log(convert(str, numRows));
module.exports = {
  convert: convert
};